home *** CD-ROM | disk | FTP | other *** search
/ ASME's Mechanical Engine…ing Toolkit 1997 December / ASME's Mechanical Engineering Toolkit 1997 December.iso / c_lang / tccurses.lzh / LINEDEL.C < prev    next >
C/C++ Source or Header  |  1987-09-07  |  3KB  |  91 lines

  1. /****************************************************************/
  2. /* Wdeleteln() routine of the PCcurses package            */
  3. /*                                */
  4. /****************************************************************/
  5. /* This version of curses is based on ncurses, a curses version    */
  6. /* originally written by Pavel Curtis at Cornell University.    */
  7. /* I have made substantial changes to make it run on IBM PC's,    */
  8. /* and therefore consider myself free to make it public domain.    */
  9. /*        Bjorn Larsson (...mcvax!enea!infovax!bl)    */
  10. /****************************************************************/
  11. /* 1.0:    Release:                    870515    */
  12. /****************************************************************/
  13.  
  14. #include <curses.h>
  15. #include <curspriv.h>
  16.  
  17. /****************************************************************/
  18. /* Wdeleteln() deletes the line at the window cursor, and the    */
  19. /* lines below it are shifted up, inserting a blank line at    */
  20. /* the bottom of the window.                    */
  21. /****************************************************************/
  22.  
  23. int    wdeleteln(win)
  24.   WINDOW    *win;
  25.   {
  26.   int        *end;
  27.   int        *temp;
  28.   short     y;
  29.   static   int     blank;
  30.   
  31.   blank = ' ' | (win->_attrs & ATR_MSK);
  32.  
  33.   temp = win->_line[win->_cury];
  34.   for (y = win->_cury; y < win->_regbottom; y++)
  35.     {
  36.     win->_line[y] = win->_line[y+1];
  37.     win->_minchng[y] = 0;
  38.     win->_maxchng[y] = win->_maxx;
  39.     }
  40.   win->_minchng[y] = 0;
  41.   win->_maxchng[y] = win->_maxx;
  42.   win->_line[win->_regbottom] = temp;
  43.   for (end = &(temp[win->_maxx]); temp <= end;)
  44.     *temp++ = blank;
  45.   return(OK);
  46.   } /* wdeleteln */
  47.  
  48. /****************************************************************/
  49. /* Deleteln() deletes the line at the stdscr cursor, and the    */
  50. /* lines below it are shifted up, inserting a blank line at    */
  51. /* the bottom of stdscr.                    */
  52. /****************************************************************/
  53.  
  54. int deleteln()
  55.   {
  56.   return(wdeleteln(stdscr));
  57.   } /* deleteln */
  58.  
  59. /****************************************************************/
  60. /* Mvdeleteln() moves the cursor to a new position in stdscr,    */
  61. /* then deletes the line at the window cursor, and the lines    */
  62. /* below it are shifted up, inserting a blank line at the bot-    */
  63. /* tom of stdscr.                        */
  64. /****************************************************************/
  65.  
  66. int mvdeleteln(y,x)
  67.   int y;
  68.   int x;
  69.   {
  70.   if (wmove(stdscr,y,x) == ERR)
  71.     return(ERR);
  72.   return(wdeleteln(stdscr));
  73.   } /* mvdeleteln */
  74.  
  75. /****************************************************************/
  76. /* Mvwdeleteln() moves the cursor to a new position in a win-    */
  77. /* dow, then deletes the line at the window cursor, and the    */
  78. /* lines below it are shifted up, inserting a blank line at    */
  79. /* the bottom of the window.                    */
  80. /****************************************************************/
  81.  
  82. int mvwdeleteln(win,y,x)
  83.   WINDOW *win;
  84.   int y;
  85.   int x;
  86.   {
  87.   if (wmove(win,y,x) == ERR)
  88.     return(ERR);
  89.   return(wdeleteln(win));
  90.   } /* mvwdeleteln */
  91.